/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权:
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2019/3/2 18:41
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.route.loop;

import com.hyacinth.route.RouteHandle;

import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 轮询算法
 * @author zhangfb
 * @version 1.0.0.1
 * @since JDK 1.8
 */
public class LoopHandle implements RouteHandle {

    private AtomicInteger index = new AtomicInteger();

    @Override
    public String selectServer(List<String> servers, String userId) {
        if (servers.size() == 0) {
            throw new RuntimeException("CIM 服务器可用服务列表为空");
        }
        int position = index.incrementAndGet() % servers.size();
        if (position <= 0) {
            position = 0;
        }
        return servers.get(position);
    }
}
